package dao

import (
	"time"
)

// 这是 UserExchangeRecord 的全局公开dao对象，被service层调用!
var UserExchangeRecordDao = userExchangeRecordDao{}

// 用户物品兑换记录
// 这是 user_exchange_record表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type UserExchangeRecord struct {
	Id         int32     `json:"id" form:"id" db:"id" v:"id"`
	GiftId     int32     `json:"gift_id" form:"gift_id" db:"gift_id" v:"gift_id"`                 // 物品ID
	Uid        int32     `json:"uid" form:"uid" db:"uid" v:"uid"`                                 // 兑换者UID
	Remark     string    `json:"remark" form:"remark" db:"remark" v:"remark"`                     // 物品说明
	ExpireTime int32     `json:"expire_time" form:"expire_time" db:"expire_time" v:"expire_time"` // 过期时间
	CreatedAt  time.Time `json:"created_at" form:"created_at" db:"created_at" v:"created_at"`
}

// 注意:这是 UserExchangeRecord 的私有dao对象，只能在dao层内使用!
type userExchangeRecordDao struct {
	InsertTemplate func(arg UserExchangeRecord) (int64, error)                    //插入一条记录
	UpdateTemplate func(arg UserExchangeRecord) (int64, error)                    //更新一条记录
	DeleteTemplate func(id int64) (int64, error)                                  `arg:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (UserExchangeRecord, error)                     `arg:"id"` //根据传入的主键获取一条记录
	List           func(arg UserExchangeRecordList) ([]UserExchangeRecord, error) //模糊分页查询
}

/*
// 这是 user_exchange_record 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type UserExchangeRecordPostman struct {
id
gift_id
uid
remark
expire_time
created_at

}*/

// 这是 user_exchange_record 表的批量请求参数
type UserExchangeRecordReq struct {
	List []UserExchangeRecord `json:"list" form:"list"`
}

// 这是 userExchangeRecordDao.List()方法的请求参数
type UserExchangeRecordList struct {
	Page
}
